var ActivitiRest = {
	options : {},
	getProcessDefinitionByKey : function(processDefinitionKey, callback) {
		var url = Lang.sub(this.options.processDefinitionByKeyUrl, {
					processDefinitionKey : processDefinitionKey
				});

		$.ajax({
			url : url,
			dataType : 'jsonp',
			cache : false,
			async : true,
			success : function(data, textStatus) {
				var processDefinition = data;
				if (!processDefinition) {
					console.error("Process definition '" + processDefinitionKey
							+ "' not found");
				} else {
					callback.apply({
								processDefinitionId : processDefinition.id
							});
				}
			}
		}).done(function(data, textStatus) {
					console.log("ajax done");
				}).fail(function(jqXHR, textStatus, error) {
			console.error('Get diagram layout[' + processDefinitionKey
							+ '] failure: ', textStatus, 'error: ', error,
					jqXHR);
		});
	},

	getProcessDefinition : function(processDefinitionId, callback) {
		var url = Lang.sub(this.options.processDefinitionUrl, {
					processDefinitionId : processDefinitionId
				});

		$.ajax({
			url : url,
			dataType : 'jsonp',
			cache : false,
			async : true,
			success : function(data, textStatus) {
				var processDefinitionDiagramLayout = data;
				if (!processDefinitionDiagramLayout) {
					console.error("Process definition diagram layout '"
							+ processDefinitionId + "' not found");
					return;
				} else {
					callback.apply({
						processDefinitionDiagramLayout : processDefinitionDiagramLayout
					});
				}
			}
		}).done(function(data, textStatus) {
					console.log("ajax done");
				}).fail(function(jqXHR, textStatus, error) {
			console.log('Get diagram layout[' + processDefinitionId
							+ '] failure: ', textStatus, jqXHR);
		});
	},

	getHighLights : function(processInstanceId, callback) {
		var url = Lang.sub(this.options.processInstanceHighLightsUrl, {
					processInstanceId : processInstanceId
				});

		$.ajax({
					url : url,
					dataType : 'jsonp',
					cache : false,
					async : true,
					success : function(data, textStatus) {
						console.log("ajax returned data");
						var highLights = data;
						if (!highLights) {
							console.log("highLights not found");
							return;
						} else {
							callback.apply({
										highLights : highLights
									});
						}
					}
				}).done(function(data, textStatus) {
					console.log("ajax done");
				}).fail(function(jqXHR, textStatus, error) {
			console.log('Get HighLights[' + processInstanceId + '] failure: ',
					textStatus, jqXHR);
		});
	}
};